package org.micode.libs.wxapp.vo;

import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 微信用户的信息
 */
@Data
public class WxAuthInfo {
    /**
     * 修改人
     */
    private String updUser;

    /**
     * 最近更新使用的程序
     */
    private String updProg;

    /**
     * 最近更新使用的IP
     */
    private String updIp;

    /**
     * 微信小程序appId
     */
    private String appId;

    /**
     * 微信号，从微信API获取。
     */
    @NotNull(message = "微信Code必须非空")
    private String code;

    /**
     * 加密算法的初始向量，从微信API获取。
     */
    @NotNull(message = "初始向量(iv)必须非空")
    private String iv;

    /**
     * 包括敏感数据在内的完整用户信息的加密数据，从微信API获取。
     * 加密算法: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法
     */
    @NotNull(message = "微信加密数据必须非空")
    private String encryptedData;

    /**
     * wx请求中的referer信息，可以用来进行appId的校验
     */
    private String referer;

    /**
     * 邀请码
     */
    private String inviteCode;

    /**
     * 代理商ID
     */
    private Long agentId;

    /**
     * 密码，在代理小程序上申请代理商资格时输入，申请成功后这个就是代理商的转账密码
     */
    private String password;

    @Override
    public String toString() {
        return "appId='" + appId + '\'' +
                ", code='" + code + '\'' +
                ", iv='" + iv + '\'' +
                ", encryptedData='" + encryptedData + '\'' +
                ", referer='" + referer + '\'' +
                ", inviteCode='" + inviteCode + '\'' +
                ", agentId=" + agentId;
    }

}
